|
|
Main menu for Browse IS/STAG
Course info
KIV / CICD
:
Course description
Department/Unit / Abbreviation
|
KIV
/
CICD
|
Academic Year
|
2023/2024
|
Academic Year
|
2023/2024
|
Title
|
Continuous Sw. Development and Delivery
|
Form of course completion
|
Exam
|
Form of course completion
|
Exam
|
Long Title
|
Continuous software development and delivery
|
Accredited / Credits
|
Yes,
4
Cred.
|
Type of completion
|
Combined
|
Type of completion
|
Combined
|
Time requirements
|
Lecture
2
[Hours/Week]
Tutorial
2
[Hours/Week]
|
Course credit prior to examination
|
Yes
|
Course credit prior to examination
|
Yes
|
Automatic acceptance of credit before examination
|
Yes in the case of a previous evaluation 4 nebo nic.
|
Included in study average
|
YES
|
Language of instruction
|
Czech
|
Occ/max
|
|
|
|
Automatic acceptance of credit before examination
|
Yes in the case of a previous evaluation 4 nebo nic.
|
Summer semester
|
0 / -
|
13 / -
|
1 / -
|
Included in study average
|
YES
|
Winter semester
|
0 / -
|
0 / -
|
0 / -
|
Repeated registration
|
NO
|
Repeated registration
|
NO
|
Timetable
|
Yes
|
Semester taught
|
Summer semester
|
Semester taught
|
Summer semester
|
Minimum (B + C) students
|
not determined
|
Optional course |
Yes
|
Optional course
|
Yes
|
Language of instruction
|
Czech
|
Internship duration
|
0
|
No. of hours of on-premise lessons |
0
|
Evaluation scale |
1|2|3|4 |
Periodicity |
každý rok
|
Evaluation scale for credit before examination |
S|N |
Periodicita upřesnění |
|
Fundamental theoretical course |
No
|
Fundamental course |
Yes
|
Fundamental theoretical course |
No
|
Evaluation scale |
1|2|3|4 |
Evaluation scale for credit before examination |
S|N |
Substituted course
|
None
|
Preclusive courses
|
N/A
|
Prerequisite courses
|
N/A
|
Informally recommended courses
|
KIV/UPS and KIV/OS and KIV/PIA or KIV/PIA-E
|
Courses depending on this Course
|
N/A
|
Histogram of students' grades over the years:
Graphic PNG
,
XLS
|
Course objectives:
|
The aim of the course is to teach students the principles of continuous development and delivery of complex software and provide them with hands-on experience with appropriate automation tools and teach them how to design and maintain automatic build pipelines.
|
Requirements on student
|
Successful implementation and regular presentation of intermediate products of the semester project (in 2-3 student groups), mandatory presence at assessment practical classes. The deadline for submitting the term work is 31.1. of the respective academic year. The student has to earn at least 50% of the total sum of possible point.
Written exam, supplemented by an oral exam as needed, whereas the student has to earn at least 50% of the total sum of possible point.
The overall assessment of the subjects is made up of 60% if the semester project assessment and 40% of the written exam assessment.
|
Content
|
Lectures outline (not aligned to the weekly schedules):
Introductions, reasons for introducing the DevOps methodology, its goals, phases and metrics. Continuous integration and delivery (CI/CD), build pipeline principles, definition of testing, staging and production environments.
Software deployment and dependencies provisioning. Theory and strategies of software updates. Basic types of software artifacts, their distribution and mutual dependencies maintenance. Introduction to the container architecture.
The container architecture, principles and benefits. Introduction to the build process, distribution and deployment of containers in CI/CD pipelines.
The approach of infrastructure as code. Basic principles, versioning and change deployment. Dynamic aspects of infrastructure and automatic scaling. Infrastructure CI/CD.
Software monitoring, tracing and event auditing. Metrics collection, important operational metrics of software systems. Log aggregation, archiving and retention policies. Utilizing metrics in software design, development and operation. Understandability and correct interpretation of collected metrics. Service level indicators and how to choose them. Sensitive data handling in systems logs.
Software security aspects during design, development and operation. Designing secure software, static code analysis, penetration tests. Software composition analysis, bill of material, third-party software security, license compliance in terms of software distribution types.
CI/CD in context of database systems. The problem of database data and schema migration, differences in traditional relational database and noSQL database migration.
Application of CI/CD principles in the areas of mobile applications and IoT devices.
Continuous feedback and its implementation in particular phases of build pipelines. Automatic notifications on outages, negative trends in operational parameters of software. Failure recovery processes and audit. Systems for feature and bug tracking.
|
Activities
|
|
Fields of study
|
|
Guarantors and lecturers
|
|
Literature
|
-
Basic:
Hsu, Tony. Hands-On Security in DevOps. Packt Publishing, 2019. ISBN 978-1-78899-550-4.
-
Basic:
Krief, Mikael. Learning DevOps. Packt Publishing, 2019. ISBN 978-1-83864-273-0.
-
Extending:
DevOps Adoption Strategies: Principles, Processes, Tools, and Trends
(Coupland, Martyn)
-
Extending:
Modern DevOps Practices
(Agarwal, Gaurav)
-
Recommended:
Gonzales, David. Implementing Modern DevOps. Packt Publishing, 2017. ISBN 978-1-78646-687-7.
-
On-line library catalogues
|
Time requirements
|
All forms of study
|
Activities
|
Time requirements for activity [h]
|
Contact hours
|
48
|
Preparation for an examination (30-60)
|
24
|
Practical training (number of hours)
|
32
|
Total
|
104
|
|
Prerequisites
|
Knowledge - students are expected to possess the following knowledge before the course commences to finish it successfully: |
Mastering at least one higher level programming language at intermediate level. |
Ability to design and implement an application of a small to intermediate scale at the level of the KIV/SAR and KIV/PIA courses. |
Knowledge of TCP/IP network fundamentals and the OS Unix/Linux environment at the level fo the KIV/UPS and KIV/ZOS courses. |
Knowledge of higher communication protocols at the level of established application interfaces at the level of the KIV/PIA course. |
Knowledge of basic principles of agile software development at the level of the KIV/ZSWI course. |
Skills - students are expected to possess the following skills before the course commences to finish it successfully: |
Mastering at least one common versioning control system at the level of the KIV/ZSWI course. |
General knowledge of process and resource management of Unix/Linux operating systems at the level of the KIV/ZOS course. |
Develop and debug software in the Unix/Linux environment. |
Competences - students are expected to possess the following competences before the course commences to finish it successfully: |
N/A |
N/A |
|
Learning outcomes
|
Knowledge - knowledge resulting from the course: |
Ability to describe and explain the model of cooperative development, automatic deployment, secure and reliable application operation. |
Ability to understand basic concepts and problems of cooperative software development like technical debt, regression and the problem of trust in open-source and third party software quality.
|
Ability to understand the functions and importance of the particular stages of software development and to be able to implement them using own or third party software. |
Knowledge of software deployment and update strategies. |
Knowlegde of software and software components distribution approaches. |
Basic knowledge of container technologies. |
Overview of monitoring possibilities, metrics of operated software and their use for diagnostics and software operational parameters trends monitoring. |
Skills - skills resulting from the course: |
Practical experience with at least one tool for infrastructure management and deployment automation. |
Practical experience with at least one tool for build pipeline development. |
Practical experience with the CI/CD model and build pipelines design. |
Practical experience with the design and implementation of the cooperative development model. |
Competences - competences resulting from the course: |
N/A |
|
Assessment methods
|
Knowledge - knowledge achieved by taking this course are verified by the following means: |
Written exam |
Continuous assessment |
Skills - skills achieved by taking this course are verified by the following means: |
Skills demonstration during practicum |
Continuous assessment |
Competences - competence achieved by taking this course are verified by the following means: |
Written exam |
|
Teaching methods
|
Knowledge - the following training methods are used to achieve the required knowledge: |
Lecture supplemented with a discussion |
Group discussion |
Self-study of literature |
Skills - the following training methods are used to achieve the required skills: |
Practicum |
Skills demonstration |
Group discussion |
Competences - the following training methods are used to achieve the required competences: |
Interactive lecture |
|
|
|
|